package com.bdqn.spark.chapter05.value

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark06_RDD_Operator_Transform {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("operator-groupby")
    val sc = new SparkContext(sparkConf)

    // 算子 - groupBy
    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)

    // 如果一个数据，经过计算，有相同的key值，就属于一个组
    // 对 1 2 3 4 按照奇数和偶数来区分
    val result: RDD[(String, Iterable[Int])] = rdd.groupBy(ele => {
      // 返回的是组的名字
      // 奇数返回数字 1    1  3
      // 偶数返回数字 0    2  4
      if (ele % 2 == 1) "奇数" else "偶数"
    })

    // (Int, Iterable[Int])
    // (0,List(2,4))
    // (1,List(1,3))
    result.collect.foreach(println)

    sc.stop()
  }
}
